[INFO] fetching crate pipitor 0.3.0-alpha.15...
[INFO] fixing pipitor-0.3.0-alpha.15 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate pipitor 0.3.0-alpha.15 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate pipitor 0.3.0-alpha.15
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate pipitor 0.3.0-alpha.15
[INFO] tweaked toml for crates.io crate pipitor 0.3.0-alpha.15 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate pipitor 0.3.0-alpha.15 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pipitor 0.3.0-alpha.15 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091
[INFO] running `Command { std: "docker" "start" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling proc-macro2 v1.0.32
[INFO] [stderr]    Compiling syn v1.0.81
[INFO] [stderr]    Compiling libc v0.2.107
[INFO] [stderr]    Compiling version_check v0.9.3
[INFO] [stderr]    Compiling serde_derive v1.0.130
[INFO] [stderr]    Compiling serde v1.0.130
[INFO] [stderr]    Compiling futures-core v0.3.17
[INFO] [stderr]     Checking pin-project-lite v0.2.7
[INFO] [stderr]     Checking bytes v1.1.0
[INFO] [stderr]    Compiling pkg-config v0.3.22
[INFO] [stderr]     Checking once_cell v1.8.0
[INFO] [stderr]    Compiling tokio v1.13.0
[INFO] [stderr]     Checking itoa v0.4.8
[INFO] [stderr]    Compiling typenum v1.14.0
[INFO] [stderr]    Compiling proc-macro-hack v0.5.19
[INFO] [stderr]    Compiling futures-macro v0.3.17
[INFO] [stderr]    Compiling futures-task v0.3.17
[INFO] [stderr]    Compiling futures-channel v0.3.17
[INFO] [stderr]    Compiling proc-macro-nested v0.1.7
[INFO] [stderr]     Checking futures-sink v0.3.17
[INFO] [stderr]    Compiling futures-util v0.3.17
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling parking_lot_core v0.8.5
[INFO] [stderr]     Checking slab v0.4.5
[INFO] [stderr]     Checking http v0.2.5
[INFO] [stderr]     Checking futures-io v0.3.17
[INFO] [stderr]     Checking instant v0.1.12
[INFO] [stderr]    Compiling generic-array v0.14.4
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling openssl-sys v0.9.70
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking tower-service v0.3.1
[INFO] [stderr]     Checking lock_api v0.4.5
[INFO] [stderr]    Compiling libsqlite3-sys v0.22.2
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling indexmap v1.7.0
[INFO] [stderr]    Compiling quote v1.0.10
[INFO] [stderr]    Compiling encoding_rs v0.8.29
[INFO] [stderr]     Checking ppv-lite86 v0.2.15
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking mio v0.7.14
[INFO] [stderr]     Checking getrandom v0.2.3
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.3
[INFO] [stderr]    Compiling ryu v1.0.5
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]    Compiling openssl v0.10.38
[INFO] [stderr]     Checking alloc-stdlib v0.2.1
[INFO] [stderr]     Checking tracing-core v0.1.21
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]    Compiling byteorder v1.4.3
[INFO] [stderr]    Compiling native-tls v0.2.8
[INFO] [stderr]     Checking opaque-debug v0.3.0
[INFO] [stderr]    Compiling httparse v1.5.1
[INFO] [stderr]     Checking brotli-decompressor v2.3.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tracing v0.1.29
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]    Compiling auto_enums_derive v0.7.12
[INFO] [stderr]     Checking tower-layer v0.3.1
[INFO] [stderr]     Checking unicode-width v0.1.9
[INFO] [stderr]     Checking rand v0.8.4
[INFO] [stderr]    Compiling serde_json v1.0.70
[INFO] [stderr]     Checking try-lock v0.2.3
[INFO] [stderr]    Compiling unicode-segmentation v1.8.0
[INFO] [stderr]     Checking openssl-probe v0.1.4
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking crypto-mac v0.11.1
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking flate2 v1.0.22
[INFO] [stderr]     Checking socket2 v0.4.2
[INFO] [stderr]     Checking sha-1 v0.9.8
[INFO] [stderr]     Checking hmac v0.11.0
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking httpdate v1.0.1
[INFO] [stderr]     Checking ansi_term v0.11.0
[INFO] [stderr]    Compiling anyhow v1.0.45
[INFO] [stderr]     Checking atoi v0.4.0
[INFO] [stderr]     Checking slice-of-array v0.2.1
[INFO] [stderr]     Checking string v0.2.1
[INFO] [stderr]     Checking env_logger v0.9.0
[INFO] [stderr]     Checking listenfd v0.3.5
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking mime v0.3.16
[INFO] [stderr]     Checking clap v2.33.3
[INFO] [stderr]     Checking brotli v3.3.2
[INFO] [stderr]     Checking quick-xml v0.22.0
[INFO] [stderr]     Checking http-body v0.4.4
[INFO] [stderr]     Checking rss v2.0.0
[INFO] [stderr]     Checking diligent-date-parser v0.1.3
[INFO] [stderr]     Checking atom_syndication v0.11.0
[INFO] [stderr]    Compiling toml v0.5.8
[INFO] [stderr]    Compiling derive_utils v0.11.2
[INFO] [stderr]    Compiling proc-macro-crate v0.1.5
[INFO] [stderr]    Compiling tokio-macros v1.5.1
[INFO] [stderr]    Compiling diesel_derives v1.4.1
[INFO] [stderr]    Compiling pin-project-internal v1.0.8
[INFO] [stderr]    Compiling oauth1-request-derive v0.4.1
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]    Compiling auto_enums_core v0.7.12
[INFO] [stderr]    Compiling async-stream-impl v0.3.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.30
[INFO] [stderr]     Checking async-stream v0.3.2
[INFO] [stderr]     Checking auto_enums v0.7.12
[INFO] [stderr]     Checking thiserror v1.0.30
[INFO] [stderr]     Checking pin-project v1.0.8
[INFO] [stderr]     Checking structopt v0.3.25
[INFO] [stderr]    Compiling diesel v1.4.8
[INFO] [stderr]     Checking futures v0.3.17
[INFO] [stderr]     Checking tower v0.4.10
[INFO] [stderr]     Checking tokio-util v0.6.9
[INFO] [stderr]     Checking tokio-stream v0.1.8
[INFO] [stderr]     Checking async-compression v0.3.8
[INFO] [stderr]     Checking tokio-native-tls v0.3.0
[INFO] [stderr]    Compiling migrations_internals v1.4.1
[INFO] [stderr]     Checking h2 v0.3.7
[INFO] [stderr]     Checking tokio-test v0.4.2
[INFO] [stderr]     Checking tower-http v0.1.2
[INFO] [stderr]     Checking tower-test v0.4.0
[INFO] [stderr]    Compiling migrations_macros v1.4.2
[INFO] [stderr]     Checking smallvec v1.7.0
[INFO] [stderr]     Checking oauth-credentials v0.3.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.0
[INFO] [stderr]     Checking http-serde v1.0.3
[INFO] [stderr]     Checking oauth1-request v0.5.1
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking twitter-stream v0.13.0
[INFO] [stderr]     Checking hyper v0.14.14
[INFO] [stderr]     Checking scheduled-thread-pool v0.2.5
[INFO] [stderr]     Checking r2d2 v0.8.9
[INFO] [stderr]     Checking twitter-client v0.0.1
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking diesel_migrations v1.4.0
[INFO] [stderr]     Checking pipitor v0.3.0-alpha.15 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `pipitor`
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util/time.rs:148:15
[INFO] [stdout]     |
[INFO] [stdout] 148 |         ($lhs:expr, $rhs:expr) => {{
[INFO] [stdout]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]     = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 148 |         ($lhs:expr_2021, $rhs:expr) => {{
[INFO] [stdout]     |                   +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  --> src/app.rs
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util/time.rs:148:26
[INFO] [stdout]     |
[INFO] [stdout] 148 |         ($lhs:expr, $rhs:expr) => {{
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 148 |         ($lhs:expr, $rhs:expr_2021) => {{
[INFO] [stdout]     |                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  ::: src/websub/subscriber.rs
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr_2021 $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  ::: src/websub/subscriber/service.rs
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util.rs:102:38
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr_2021)*) => {{
[INFO] [stdout]     |                                          +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]   = cause: error: expected identifier
[INFO] [stderr]              --> src/websub/subscriber/service.rs:93:93
[INFO] [stderr]               |
[INFO] [stderr]            93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>> + use<S, B>
[INFO] [stderr]               |                                                                                             ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: may only be used on expression, statement, or function
[INFO] [stderr]               --> src/websub/subscriber/service.rs:90:5
[INFO] [stderr]                |
[INFO] [stderr]             90 | /     pub fn discover(
[INFO] [stderr]             91 | |         &self,
[INFO] [stderr]             92 | |         topic: String,
[INFO] [stderr]             93 | |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>> + use<S, B>
[INFO] [stderr]            ...   |
[INFO] [stderr]            145 | |             })
[INFO] [stderr]            146 | |     }
[INFO] [stderr]                | |_____^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0599]: no method named `discover` found for reference `&subscriber::service::Service<S, B>` in the current scope
[INFO] [stderr]              --> src/websub/subscriber/service.rs:70:14
[INFO] [stderr]               |
[INFO] [stderr]            70 |         self.discover(topic).map(|result| {
[INFO] [stderr]               |              ^^^^^^^^ method not found in `&subscriber::service::Service<S, B>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0599]: no method named `discover` found for reference `&subscriber::service::Service<http_service::Service<S>, B>` in the current scope
[INFO] [stderr]               --> src/app.rs:433:41
[INFO] [stderr]                |
[INFO] [stderr]            433 |             let task = websub.service().discover(topic.to_owned());
[INFO] [stderr]                |                                         ^^^^^^^^ method not found in `&subscriber::service::Service<http_service::Service<S>, B>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0599]: no method named `discover` found for reference `&Service<Client<Connector, Full<Bytes>>, Full<Bytes>>` in the current scope
[INFO] [stderr]               --> src/websub/subscriber.rs:410:54
[INFO] [stderr]                |
[INFO] [stderr]            410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stderr]                |                                                      ^^^^^^^^ method not found in `&Service<Client<Connector, Full<Bytes>>, Full<Bytes>>`
[INFO] [stderr]                |
[INFO] [stderr]                = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/pipitor-9ef2a4847893a1ca.long-type-7797857671944871420.txt'
[INFO] [stderr]                = note: consider using `--verbose` to print the full type name to the console
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/app.rs:359:36
[INFO] [stderr]                |
[INFO] [stderr]            359 |         while let Poll::Ready(v) = twitter.as_mut().poll_next(cx) {
[INFO] [stderr]                |                               -    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                               |    |
[INFO] [stderr]                |                               |    this value will be stored in a temporary; let us call it `#3`
[INFO] [stderr]                |                               |    up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               `v` calls a custom destructor
[INFO] [stderr]                |                               `v` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            367 |             let json = match result.context("error while listening to Twitter's Streaming API") {
[INFO] [stderr]                |                 ----         ------------------------------------------------------------------
[INFO] [stderr]                |                 |            |
[INFO] [stderr]                |                 |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                 |            `#1` will be dropped later as of Edition 2024
[INFO] [stderr]                |                 `json` calls a custom destructor
[INFO] [stderr]                |                 `json` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            397 |                 this.sender.send_tweet(tweet, &core)?;
[INFO] [stderr]                |                 -------------------------------------
[INFO] [stderr]                |                 |
[INFO] [stderr]                |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stderr]                |                 `#2` will be dropped later as of Edition 2024
[INFO] [stderr]            398 |             }
[INFO] [stderr]            399 |         }
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#3` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `v` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `json` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stderr]                |
[INFO] [stderr]            565 | impl Drop for Error {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#2` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stderr]                |
[INFO] [stderr]            565 | impl Drop for Error {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/websub/subscriber.rs:108:41
[INFO] [stderr]                |
[INFO] [stderr]            108 |         while let Poll::Ready(option) = this.incoming.as_mut().try_poll_next(cx)? {
[INFO] [stderr]                |                               ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                               |         |
[INFO] [stderr]                |                               |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stderr]                |                               |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stderr]                |                               |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               `option` calls a custom destructor
[INFO] [stderr]                |                               `option` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            113 |                     tokio::spawn(this.server.serve_connection(sock, service));
[INFO] [stderr]                |                     ---------------------------------------------------------
[INFO] [stderr]                |                     |
[INFO] [stderr]                |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                     `#1` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            116 |         }
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/runtime/task/join.rs:242:1
[INFO] [stderr]                |
[INFO] [stderr]            242 | impl<T> Drop for JoinHandle<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 5 previous errors; 2 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            For more information about this error, try `rustc --explain E0599`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]  --> src/twitter/api.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 |         $method:ident $uri:expr => $Data:ty;
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this changes meaning in Rust 2024
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]   |
[INFO] [stdout] 3 |         $method:ident $uri:expr_2021 => $Data:ty;
[INFO] [stdout]   |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]  --> src/twitter/api.rs:7:78
[INFO] [stdout]   |
[INFO] [stdout] 7 |             $($(#[$opt_attr:meta])* $optional:ident: $opt_ty:ty $(= $default:expr)?),* $(,)?
[INFO] [stdout]   |                                                                              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this changes meaning in Rust 2024
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]   |
[INFO] [stdout] 7 |             $($(#[$opt_attr:meta])* $optional:ident: $opt_ty:ty $(= $default:expr_2021)?),* $(,)?
[INFO] [stdout]   |                                                                                  +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr) => ($this);
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/account.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / api_requests! {
[INFO] [stdout]  2 | |     GET "https://api.twitter.com/1.1/account/verify_credentials.json" => super::super::User;
[INFO] [stdout]  3 | |     #[derive(Default)]
[INFO] [stdout]  4 | |     pub struct VerifyCredentials {;}
[INFO] [stdout]  5 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / api_requests! {
[INFO] [stdout] 15 | |     GET "https://api.twitter.com/1.1/lists/members.json" => ListsMembers;
[INFO] [stdout] 16 | |     pub struct Members {
[INFO] [stdout] 17 | |         list_id: NonZeroU64;
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / api_requests! {
[INFO] [stdout] 15 | |     GET "https://api.twitter.com/1.1/lists/members.json" => ListsMembers;
[INFO] [stdout] 16 | |     pub struct Members {
[INFO] [stdout] 17 | |         list_id: NonZeroU64;
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     api_requests! {
[INFO] [stdout] 54 | |         POST "https://api.twitter.com/1.1/lists/members/create.json" => de::IgnoredAny;
[INFO] [stdout] 55 | |         pub struct Create {
[INFO] [stdout] 56 | |             list_id: NonZeroU64,
[INFO] [stdout] ...  |
[INFO] [stdout] 65 | |     }
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     api_requests! {
[INFO] [stdout] 54 | |         POST "https://api.twitter.com/1.1/lists/members/create.json" => de::IgnoredAny;
[INFO] [stdout] 55 | |         pub struct Create {
[INFO] [stdout] 56 | |             list_id: NonZeroU64,
[INFO] [stdout] ...  |
[INFO] [stdout] 65 | |     }
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/statuses.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / api_requests! {
[INFO] [stdout]  5 | |     POST "https://api.twitter.com/1.1/statuses/retweet.json" => de::IgnoredAny;
[INFO] [stdout]  6 | |     pub struct Retweet {
[INFO] [stdout]  7 | |         id: i64;
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/statuses.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / api_requests! {
[INFO] [stdout]  5 | |     POST "https://api.twitter.com/1.1/statuses/retweet.json" => de::IgnoredAny;
[INFO] [stdout]  6 | |     pub struct Retweet {
[INFO] [stdout]  7 | |         id: i64;
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/app.rs:241:17
[INFO] [stdout]     |
[INFO] [stdout] 241 |             ($r:expr) => {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 241 |             ($r:expr_2021) => {
[INFO] [stdout]     |                     +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/websub/subscriber/service.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |             ($input:expr) => {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 222 |             ($input:expr_2021) => {
[INFO] [stdout]     |                         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/util/concat_body.rs:51:34
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                                  ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/util/concat_body.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]    = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 51 -                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout] 51 +                 State::Streaming(buf) => buf.put(data),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/app.rs:359:36
[INFO] [stdout]     |
[INFO] [stdout] 359 |         while let Poll::Ready(v) = twitter.as_mut().poll_next(cx) {
[INFO] [stdout]     |                               -    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                               |    |
[INFO] [stdout]     |                               |    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               |    up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               `v` calls a custom destructor
[INFO] [stdout]     |                               `v` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 367 |             let json = match result.context("error while listening to Twitter's Streaming API") {
[INFO] [stdout]     |                 ----         ------------------------------------------------------------------
[INFO] [stdout]     |                 |            |
[INFO] [stdout]     |                 |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 |            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                 `json` calls a custom destructor
[INFO] [stdout]     |                 `json` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 397 |                 this.sender.send_tweet(tweet, &core)?;
[INFO] [stdout]     |                 -------------------------------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 398 |             }
[INFO] [stdout] 399 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `v` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `json` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/websub/subscriber.rs:108:41
[INFO] [stdout]     |
[INFO] [stdout] 108 |         while let Poll::Ready(option) = this.incoming.as_mut().try_poll_next(cx)? {
[INFO] [stdout]     |                               ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                               |         |
[INFO] [stdout]     |                               |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                               |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               `option` calls a custom destructor
[INFO] [stdout]     |                               `option` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 113 |                     tokio::spawn(this.server.serve_connection(sock, service));
[INFO] [stdout]     |                     ---------------------------------------------------------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 116 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/runtime/task/join.rs:242:1
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Default + Extend<Outbox> + DerefMut + Deref<Target = [Outbox]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/manifest.rs:307:16
[INFO] [stdout]     |
[INFO] [stdout] 307 |     ) -> &mut (impl Default + Extend<Outbox> + DerefMut<Target = [Outbox]>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/manifest.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |         &mut self,
[INFO] [stdout]     |         ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 307 |     ) -> &mut ((impl Default + Extend<Outbox> + DerefMut<Target = [Outbox]> + use<>)) {
[INFO] [stdout]     |                +                                                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Extend<std::sync::Arc<Route>> + DerefMut + Deref<Target = [std::sync::Arc<Route>]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/router.rs:61:23
[INFO] [stdout]    |
[INFO] [stdout] 61 |     ) -> Option<&mut (impl Extend<Arc<Route>> + DerefMut<Target = [Arc<Route>]>)> {
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/router.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         &mut self,
[INFO] [stdout]    |         ^
[INFO] [stdout] 60 |         topic: &TopicId<'static>, // FIXME: This should be `TopicId<'_>`
[INFO] [stdout]    |                ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 61 |     ) -> Option<&mut ((impl Extend<Arc<Route>> + DerefMut<Target = [Arc<Route>]> + use<>))> {
[INFO] [stdout]    |                       +                                                          ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl IntoIterator<Item = std::sync::Arc<Route>> + DerefMut + Deref<Target = [std::sync::Arc<Route>]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/router.rs:68:17
[INFO] [stdout]    |
[INFO] [stdout] 68 |     ) -> Option<impl IntoIterator<Item = Arc<Route>> + DerefMut<Target = [Arc<Route>]>> {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/router.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &mut self,
[INFO] [stdout]    |         ^
[INFO] [stdout] 67 |         topic: &TopicId<'static>, // FIXME: This should be `TopicId<'_>`
[INFO] [stdout]    |                ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 68 |     ) -> Option<impl IntoIterator<Item = Arc<Route>> + DerefMut<Target = [Arc<Route>]> + use<>> {
[INFO] [stdout]    |                                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]   --> src/twitter/list_timeline/interval.rs:55:20
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let t = if let Some(handle) = this.handle.upgrade() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^---------------------
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]    |
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]   --> src/twitter/list_timeline/interval.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         } else {
[INFO] [stdout]    |         ^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]    = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]    |
[INFO] [stdout] 55 ~         let t = match this.handle.upgrade() { Some(handle) => {
[INFO] [stdout] 56 |             handle
[INFO] [stdout] 57 ~         } _ => {
[INFO] [stdout] 58 |             return Poll::Ready(None);
[INFO] [stdout] 59 ~         }};
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> src/app.rs:116:24
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     if let Some(i) = fds.take_unix_listener(0)? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^--------------------------
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 118 |                     } else {
[INFO] [stdout]     |                     ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 116 ~                     match fds.take_unix_listener(0)? { Some(i) => {
[INFO] [stdout] 117 |                         Ok(Some(i.try_into()?))
[INFO] [stdout] 118 ~                     } _ => {
[INFO] [stdout] 119 |                         Ok(None)
[INFO] [stdout] 120 ~                     }}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> src/app.rs:175:16
[INFO] [stdout]     |
[INFO] [stdout] 175 |             if let Some(i) = fds.take_tcp_listener(0).ok().flatten() {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^---------------------------------------
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout] 176 |                 i.try_into()?
[INFO] [stdout] 177 |             } else if let Some(i) = make_unix_incoming(&mut fds)? {
[INFO] [stdout]     |                                     ----------------------------- this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             } else if let Some(i) = make_unix_incoming(&mut fds)? {
[INFO] [stdout]     |             ^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             } else {
[INFO] [stdout]     |             ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 175 ~             match fds.take_tcp_listener(0).ok().flatten() { Some(i) => {
[INFO] [stdout] 176 |                 i.try_into()?
[INFO] [stdout] 177 ~             } _ => { match make_unix_incoming(&mut fds)? { Some(i) => {
[INFO] [stdout] 178 |                 i
[INFO] [stdout] 179 ~             } _ => {
[INFO] [stdout] 180 |                 anyhow::bail!("Either `websub.bind` in the manifest or `LISTEN_FD` must be provided for WebSub subscriber");
[INFO] [stdout] 181 ~             }}}}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = ()>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/app/sender.rs:203:25
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()>> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/app/sender.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 201 |         tweet: &twitter::Tweet,
[INFO] [stdout]     |                ^
[INFO] [stdout] 202 |         core: &Core<S>,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/hub.rs:71:6
[INFO] [stdout]    |
[INFO] [stdout] 71 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/hub.rs:66:15
[INFO] [stdout]    |
[INFO] [stdout] 66 |     callback: &Uri,
[INFO] [stdout]    |               ^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     conn: &SqliteConnection,
[INFO] [stdout]    |           ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]    |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/hub.rs:97:6
[INFO] [stdout]    |
[INFO] [stdout] 97 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/hub.rs:91:15
[INFO] [stdout]    |
[INFO] [stdout] 91 |     callback: &Uri,
[INFO] [stdout]    |               ^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     conn: &SqliteConnection,
[INFO] [stdout]    |           ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 97 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]    |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 140 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:165:6
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>>
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:161:15
[INFO] [stdout]     |
[INFO] [stdout] 161 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> + use<S, B>
[INFO] [stdout]     |                                                                       +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:165:27
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:161:15
[INFO] [stdout]     |
[INFO] [stdout] 161 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>> + use<S, B>>
[INFO] [stdout]     |                                                                      +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]   --> src/websub/subscriber/scheduler.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let t = if let Some(t) = this.handle.upgrade() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^---------------------
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]    |
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]   --> src/websub/subscriber/scheduler.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         } else {
[INFO] [stdout]    |         ^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]    |
[INFO] [stdout] 63 ~         let t = match this.handle.upgrade() { Some(t) => {
[INFO] [stdout] 64 |             t
[INFO] [stdout] 65 ~         } _ => {
[INFO] [stdout] 66 |             return Poll::Ready(());
[INFO] [stdout] 67 ~         }};
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), anyhow::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:61:60
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>>
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:61:35
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>>
[INFO] [stdout]    |                                   ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>> + use<S, B>
[INFO] [stdout]    |                                                                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(std::string::String, std::option::Option<impl Iterator<Item = std::string::String>>), anyhow::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:93:10
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>> + use<S, B>
[INFO] [stdout]    |                                                                                               +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = std::string::String>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:93:62
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>>
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]    |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:153:10
[INFO] [stdout]     |
[INFO] [stdout] 153 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 152 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 153 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 191 |         topic: String,
[INFO] [stdout] 192 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> + use<S, B> {
[INFO] [stdout]     |                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:193:31
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 191 |         topic: String,
[INFO] [stdout] 192 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>> + use<S, B>> {
[INFO] [stdout]     |                                                                          +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:203:10
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 202 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 212 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 213 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = ()> + 'a` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber.rs:672:10
[INFO] [stdout]     |
[INFO] [stdout] 672 |     ) -> impl std::future::Future<Output = ()> + 'a {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber.rs:669:17
[INFO] [stdout]     |
[INFO] [stdout] 669 |         client: &Client<Connector, Full<Bytes>>,
[INFO] [stdout]     |                 ^
[INFO] [stdout] 670 |         callback: &Uri,
[INFO] [stdout]     |                   ^
[INFO] [stdout] 671 |         query: &hub::Verify<&'a str>,
[INFO] [stdout]     |                ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 672 |     ) -> impl std::future::Future<Output = ()> + 'a + use<'a> {
[INFO] [stdout]     |                                                     +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: errors present after applying fixes to crate `pipitor`
[INFO] [stderr]  --> src/app.rs
[INFO] [stderr]  ::: src/websub/subscriber.rs
[INFO] [stderr]  ::: src/websub/subscriber/service.rs
[INFO] [stderr]   = cause: error: expected identifier
[INFO] [stderr]              --> src/websub/subscriber/service.rs:93:93
[INFO] [stderr]               |
[INFO] [stderr]            93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>> + use<S, B>
[INFO] [stderr]               |                                                                                             ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: may only be used on expression, statement, or function
[INFO] [stderr]               --> src/websub/subscriber/service.rs:90:5
[INFO] [stderr]                |
[INFO] [stderr]             90 | /     pub fn discover(
[INFO] [stderr]             91 | |         &self,
[INFO] [stderr]             92 | |         topic: String,
[INFO] [stderr]             93 | |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>> + use<S, B>
[INFO] [stderr]            ...   |
[INFO] [stderr]            145 | |             })
[INFO] [stderr]            146 | |     }
[INFO] [stderr]                | |_____^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0599]: no method named `discover` found for reference `&subscriber::service::Service<S, B>` in the current scope
[INFO] [stderr]              --> src/websub/subscriber/service.rs:70:14
[INFO] [stderr]               |
[INFO] [stderr]            70 |         self.discover(topic).map(|result| {
[INFO] [stderr]               |              ^^^^^^^^ method not found in `&subscriber::service::Service<S, B>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0599]: no method named `discover` found for reference `&subscriber::service::Service<http_service::Service<S>, B>` in the current scope
[INFO] [stderr]               --> src/app.rs:433:41
[INFO] [stderr]                |
[INFO] [stderr]            433 |             let task = websub.service().discover(topic.to_owned());
[INFO] [stderr]                |                                         ^^^^^^^^ method not found in `&subscriber::service::Service<http_service::Service<S>, B>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/app.rs:359:36
[INFO] [stderr]                |
[INFO] [stderr]            359 |         while let Poll::Ready(v) = twitter.as_mut().poll_next(cx) {
[INFO] [stderr]                |                               -    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                               |    |
[INFO] [stderr]                |                               |    this value will be stored in a temporary; let us call it `#3`
[INFO] [stderr]                |                               |    up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               `v` calls a custom destructor
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]     = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr_2021 $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/util.rs:102:38
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr)*) => {{
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ($path:path, $dbg1:expr $(, $dbg:expr_2021)*) => {{
[INFO] [stdout]     |                                          +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]  --> src/twitter/api.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 |         $method:ident $uri:expr => $Data:ty;
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this changes meaning in Rust 2024
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]   |
[INFO] [stdout] 3 |         $method:ident $uri:expr_2021 => $Data:ty;
[INFO] [stdout]   |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]  --> src/twitter/api.rs:7:78
[INFO] [stdout]   |
[INFO] [stdout] 7 |             $($(#[$opt_attr:meta])* $optional:ident: $opt_ty:ty $(= $default:expr)?),* $(,)?
[INFO] [stdout]   |                                                                              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this changes meaning in Rust 2024
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]   |
[INFO] [stdout] 7 |             $($(#[$opt_attr:meta])* $optional:ident: $opt_ty:ty $(= $default:expr_2021)?),* $(,)?
[INFO] [stdout]   |                                                                                  +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                               `v` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            367 |             let json = match result.context("error while listening to Twitter's Streaming API") {
[INFO] [stderr]                |                 ----         ------------------------------------------------------------------
[INFO] [stderr]                |                 |            |
[INFO] [stderr]                |                 |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                 |            `#1` will be dropped later as of Edition 2024
[INFO] [stderr]                |                 `json` calls a custom destructor
[INFO] [stderr]                |                 `json` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr) => ($this);
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            397 |                 this.sender.send_tweet(tweet, &core)?;
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/account.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / api_requests! {
[INFO] [stdout]  2 | |     GET "https://api.twitter.com/1.1/account/verify_credentials.json" => super::super::User;
[INFO] [stdout]  3 | |     #[derive(Default)]
[INFO] [stdout]  4 | |     pub struct VerifyCredentials {;}
[INFO] [stdout]  5 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                 -------------------------------------
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / api_requests! {
[INFO] [stdout] 15 | |     GET "https://api.twitter.com/1.1/lists/members.json" => ListsMembers;
[INFO] [stdout] 16 | |     pub struct Members {
[INFO] [stdout] 17 | |         list_id: NonZeroU64;
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                 |
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / api_requests! {
[INFO] [stdout] 15 | |     GET "https://api.twitter.com/1.1/lists/members.json" => ListsMembers;
[INFO] [stdout] 16 | |     pub struct Members {
[INFO] [stdout] 17 | |         list_id: NonZeroU64;
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     api_requests! {
[INFO] [stdout] 54 | |         POST "https://api.twitter.com/1.1/lists/members/create.json" => de::IgnoredAny;
[INFO] [stdout] 55 | |         pub struct Create {
[INFO] [stdout] 56 | |             list_id: NonZeroU64,
[INFO] [stdout] ...  |
[INFO] [stdout] 65 | |     }
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/lists.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     api_requests! {
[INFO] [stdout] 54 | |         POST "https://api.twitter.com/1.1/lists/members/create.json" => de::IgnoredAny;
[INFO] [stdout] 55 | |         pub struct Create {
[INFO] [stdout] 56 | |             list_id: NonZeroU64,
[INFO] [stdout] ...  |
[INFO] [stdout] 65 | |     }
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            398 |             }
[INFO] [stderr]            399 |         }
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#3` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `v` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `json` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stderr]                |
[INFO] [stderr]            565 | impl Drop for Error {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stderr]                |
[INFO] [stderr]            512 | impl Drop for Bytes {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#2` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stderr]                |
[INFO] [stderr]            565 | impl Drop for Error {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/websub/subscriber.rs:108:41
[INFO] [stderr]                |
[INFO] [stderr]            108 |         while let Poll::Ready(option) = this.incoming.as_mut().try_poll_next(cx)? {
[INFO] [stderr]                |                               ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                               |         |
[INFO] [stderr]                |                               |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stderr]                |                               |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stderr]                |                               |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                |                               `option` calls a custom destructor
[INFO] [stderr]                |                               `option` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            113 |                     tokio::spawn(this.server.serve_connection(sock, service));
[INFO] [stderr]                |                     ---------------------------------------------------------
[INFO] [stderr]                |                     |
[INFO] [stderr]                |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                     `#1` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            116 |         }
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/runtime/task/join.rs:242:1
[INFO] [stderr]                |
[INFO] [stderr]            242 | impl<T> Drop for JoinHandle<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 4 previous errors; 2 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            For more information about this error, try `rustc --explain E0599`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/statuses.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / api_requests! {
[INFO] [stdout]  5 | |     POST "https://api.twitter.com/1.1/statuses/retweet.json" => de::IgnoredAny;
[INFO] [stdout]  6 | |     pub struct Retweet {
[INFO] [stdout]  7 | |         id: i64;
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]   --> src/twitter/api.rs:22:28
[INFO] [stdout]    |
[INFO] [stdout] 22 |                       ($this:expr) => ($this);
[INFO] [stdout]    |                              ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/twitter/api/statuses.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / api_requests! {
[INFO] [stdout]  5 | |     POST "https://api.twitter.com/1.1/statuses/retweet.json" => de::IgnoredAny;
[INFO] [stdout]  6 | |     pub struct Retweet {
[INFO] [stdout]  7 | |         id: i64;
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]    = note: this warning originates in the macro `api_requests` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]    |
[INFO] [stdout] 22 |                     ($this:expr_2021) => ($this);
[INFO] [stdout]    |                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/app.rs:241:17
[INFO] [stdout]     |
[INFO] [stdout] 241 |             ($r:expr) => {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 241 |             ($r:expr_2021) => {
[INFO] [stdout]     |                     +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> src/websub/subscriber/service.rs:222:21
[INFO] [stdout]     |
[INFO] [stdout] 222 |             ($input:expr) => {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 222 |             ($input:expr_2021) => {
[INFO] [stdout]     |                         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/util/concat_body.rs:51:34
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                                  ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/util/concat_body.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]    = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 51 -                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout] 51 +                 State::Streaming(buf) => buf.put(data),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/app.rs:359:36
[INFO] [stdout]     |
[INFO] [stdout] 359 |         while let Poll::Ready(v) = twitter.as_mut().poll_next(cx) {
[INFO] [stdout]     |                               -    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                               |    |
[INFO] [stdout]     |                               |    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               |    up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               `v` calls a custom destructor
[INFO] [stdout]     |                               `v` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 367 |             let json = match result.context("error while listening to Twitter's Streaming API") {
[INFO] [stdout]     |                 ----         ------------------------------------------------------------------
[INFO] [stdout]     |                 |            |
[INFO] [stdout]     |                 |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 |            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                 `json` calls a custom destructor
[INFO] [stdout]     |                 `json` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 397 |                 this.sender.send_tweet(tweet, &core)?;
[INFO] [stdout]     |                 -------------------------------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 398 |             }
[INFO] [stdout] 399 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `v` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `json` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.1.0/src/bytes.rs:512:1
[INFO] [stdout]     |
[INFO] [stdout] 512 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.45/src/error.rs:565:1
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/websub/subscriber.rs:108:41
[INFO] [stdout]     |
[INFO] [stdout] 108 |         while let Poll::Ready(option) = this.incoming.as_mut().try_poll_next(cx)? {
[INFO] [stdout]     |                               ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                               |         |
[INFO] [stdout]     |                               |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                               |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               |         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               |         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                               `option` calls a custom destructor
[INFO] [stdout]     |                               `option` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 113 |                     tokio::spawn(this.server.serve_connection(sock, service));
[INFO] [stdout]     |                     ---------------------------------------------------------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 116 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/runtime/task/join.rs:242:1
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Default + Extend<Outbox> + DerefMut + Deref<Target = [Outbox]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/manifest.rs:307:16
[INFO] [stdout]     |
[INFO] [stdout] 307 |     ) -> &mut (impl Default + Extend<Outbox> + DerefMut<Target = [Outbox]>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/manifest.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |         &mut self,
[INFO] [stdout]     |         ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 307 |     ) -> &mut ((impl Default + Extend<Outbox> + DerefMut<Target = [Outbox]> + use<>)) {
[INFO] [stdout]     |                +                                                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Extend<Arc<Route>> + DerefMut + Deref<Target = [Arc<Route>]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/router.rs:61:23
[INFO] [stdout]    |
[INFO] [stdout] 61 |     ) -> Option<&mut (impl Extend<Arc<Route>> + DerefMut<Target = [Arc<Route>]>)> {
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/router.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         &mut self,
[INFO] [stdout]    |         ^
[INFO] [stdout] 60 |         topic: &TopicId<'static>, // FIXME: This should be `TopicId<'_>`
[INFO] [stdout]    |                ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 61 |     ) -> Option<&mut ((impl Extend<Arc<Route>> + DerefMut<Target = [Arc<Route>]> + use<>))> {
[INFO] [stdout]    |                       +                                                          ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl IntoIterator<Item = Arc<Route>> + DerefMut + Deref<Target = [Arc<Route>]>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/router.rs:68:17
[INFO] [stdout]    |
[INFO] [stdout] 68 |     ) -> Option<impl IntoIterator<Item = Arc<Route>> + DerefMut<Target = [Arc<Route>]>> {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/router.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &mut self,
[INFO] [stdout]    |         ^
[INFO] [stdout] 67 |         topic: &TopicId<'static>, // FIXME: This should be `TopicId<'_>`
[INFO] [stdout]    |                ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 68 |     ) -> Option<impl IntoIterator<Item = Arc<Route>> + DerefMut<Target = [Arc<Route>]> + use<>> {
[INFO] [stdout]    |                                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]   --> src/twitter/list_timeline/interval.rs:55:20
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let t = if let Some(handle) = this.handle.upgrade() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^---------------------
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]    |
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]   --> src/twitter/list_timeline/interval.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         } else {
[INFO] [stdout]    |         ^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]    = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]    |
[INFO] [stdout] 55 ~         let t = match this.handle.upgrade() { Some(handle) => {
[INFO] [stdout] 56 |             handle
[INFO] [stdout] 57 ~         } _ => {
[INFO] [stdout] 58 |             return Poll::Ready(None);
[INFO] [stdout] 59 ~         }};
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> src/app.rs:116:24
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     if let Some(i) = fds.take_unix_listener(0)? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^--------------------------
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 118 |                     } else {
[INFO] [stdout]     |                     ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 116 ~                     match fds.take_unix_listener(0)? { Some(i) => {
[INFO] [stdout] 117 |                         Ok(Some(i.try_into()?))
[INFO] [stdout] 118 ~                     } _ => {
[INFO] [stdout] 119 |                         Ok(None)
[INFO] [stdout] 120 ~                     }}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> src/app.rs:175:16
[INFO] [stdout]     |
[INFO] [stdout] 175 |             if let Some(i) = fds.take_tcp_listener(0).ok().flatten() {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^---------------------------------------
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout] 176 |                 i.try_into()?
[INFO] [stdout] 177 |             } else if let Some(i) = make_unix_incoming(&mut fds)? {
[INFO] [stdout]     |                                     ----------------------------- this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             } else if let Some(i) = make_unix_incoming(&mut fds)? {
[INFO] [stdout]     |             ^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> src/app.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             } else {
[INFO] [stdout]     |             ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 175 ~             match fds.take_tcp_listener(0).ok().flatten() { Some(i) => {
[INFO] [stdout] 176 |                 i.try_into()?
[INFO] [stdout] 177 ~             } _ => { match make_unix_incoming(&mut fds)? { Some(i) => {
[INFO] [stdout] 178 |                 i
[INFO] [stdout] 179 ~             } _ => {
[INFO] [stdout] 180 |                 anyhow::bail!("Either `websub.bind` in the manifest or `LISTEN_FD` must be provided for WebSub subscriber");
[INFO] [stdout] 181 ~             }}}}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = ()>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/app/sender.rs:203:25
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()>> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/app/sender.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 201 |         tweet: &twitter::Tweet,
[INFO] [stdout]     |                ^
[INFO] [stdout] 202 |         core: &Core<S>,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/hub.rs:71:6
[INFO] [stdout]    |
[INFO] [stdout] 71 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/hub.rs:66:15
[INFO] [stdout]    |
[INFO] [stdout] 66 |     callback: &Uri,
[INFO] [stdout]    |               ^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     conn: &SqliteConnection,
[INFO] [stdout]    |           ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]    |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/hub.rs:97:6
[INFO] [stdout]    |
[INFO] [stdout] 97 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/hub.rs:91:15
[INFO] [stdout]    |
[INFO] [stdout] 91 |     callback: &Uri,
[INFO] [stdout]    |               ^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     conn: &SqliteConnection,
[INFO] [stdout]    |           ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 97 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]    |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | ) -> impl Future<Output = Result<(), S::Error>>
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 140 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:165:6
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>>
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:161:15
[INFO] [stdout]     |
[INFO] [stdout] 161 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> + use<S, B>
[INFO] [stdout]     |                                                                       +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/hub.rs:165:27
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/hub.rs:161:15
[INFO] [stdout]     |
[INFO] [stdout] 161 |     callback: &Uri,
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     conn: &SqliteConnection,
[INFO] [stdout]     |           ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 165 | ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>> + use<S, B>>
[INFO] [stdout]     |                                                                      +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]   --> src/websub/subscriber/scheduler.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let t = if let Some(t) = this.handle.upgrade() {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^---------------------
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]    |
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]   --> src/websub/subscriber/scheduler.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         } else {
[INFO] [stdout]    |         ^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]    |
[INFO] [stdout] 63 ~         let t = match this.handle.upgrade() { Some(t) => {
[INFO] [stdout] 64 |             t
[INFO] [stdout] 65 ~         } _ => {
[INFO] [stdout] 66 |             return Poll::Ready(());
[INFO] [stdout] 67 ~         }};
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), anyhow::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:61:60
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>>
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:61:35
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>>
[INFO] [stdout]    |                                   ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn discover_and_subscribe(&self, topic: String) -> impl Future<Output = anyhow::Result<()>> + use<S, B>
[INFO] [stdout]    |                                                                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(std::string::String, std::option::Option<impl Iterator<Item = std::string::String>>), anyhow::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:93:10
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>> + use<S, B>
[INFO] [stdout]    |                                                                                               +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = std::string::String>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/websub/subscriber/service.rs:93:62
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String>>)>>
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/websub/subscriber/service.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]    |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:153:10
[INFO] [stdout]     |
[INFO] [stdout] 153 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 152 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 153 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 191 |         topic: String,
[INFO] [stdout] 192 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> + use<S, B> {
[INFO] [stdout]     |                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:193:31
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>>> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] 191 |         topic: String,
[INFO] [stdout] 192 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ) -> impl Iterator<Item = impl Future<Output = Result<(), S::Error>> + use<S, B>> {
[INFO] [stdout]     |                                                                          +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:203:10
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 202 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl futures::Future<Output = Result<(), <S as twitter_client::traits::HttpService<B>>::Error>>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/websub/subscriber/service.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 |     ) -> impl Future<Output = Result<(), S::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/websub/subscriber/service.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 212 |         conn: &SqliteConnection,
[INFO] [stdout]     |               ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 213 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/pipitor/main.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/bin/pipitor/ctl.rs (1 fix)
[INFO] [stderr]        Fixed src/bin/pipitor/common/ipc.rs (4 fixes)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/pipitor/twitter_login.rs:149:30
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let mut stdout = stdout.lock();
[INFO] [stdout]     |                 ----------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `stdout` calls a custom destructor
[INFO] [stdout]     |                 `stdout` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 140 |             for user in users {
[INFO] [stdout]     |                         -----
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         `iter` calls a custom destructor
[INFO] [stdout]     |                         `iter` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 149 |         if let Some(input) = stdin.next().await {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^-----
[INFO] [stdout]     |                              |            |
[INFO] [stdout]     |                              |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                              |            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                              this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                              up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 152 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `stdout` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sync/reentrant_lock.rs:420:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/bin/pipitor/twitter_login.rs:149:30
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let mut stdout = stdout.lock();
[INFO] [stdout]     |                 ----------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `stdout` calls a custom destructor
[INFO] [stdout]     |                 `stdout` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 140 |             for user in users {
[INFO] [stdout]     |                         -----
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         `iter` calls a custom destructor
[INFO] [stdout]     |                         `iter` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 149 |         if let Some(input) = stdin.next().await {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^-----
[INFO] [stdout]     |                              |            |
[INFO] [stdout]     |                              |            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                              |            `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                              this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                              up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 152 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `stdout` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sync/reentrant_lock.rs:420:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.84s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: migrations_internals v1.4.1, quick-xml v0.22.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] [stderr] crater-edition-check: pipitor v0.3.0-alpha.15 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking pipitor v0.3.0-alpha.15 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `First`
[INFO] [stdout]   --> src/util.rs:74:30
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use self::first::{first, First};
[INFO] [stdout]    |                              ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `system_time_now`
[INFO] [stdout]   --> src/util.rs:77:64
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub use self::time::{instant_from_unix, instant_now, now_unix, system_time_now};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `First`
[INFO] [stdout]   --> src/util.rs:74:30
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use self::first::{first, First};
[INFO] [stdout]    |                              ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `system_time_now`
[INFO] [stdout]   --> src/util.rs:77:64
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub use self::time::{instant_from_unix, instant_now, now_unix, system_time_now};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sleep`
[INFO] [stdout]   --> src/util.rs:79:40
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub use self::time::{FutureTimeoutExt, Sleep};
[INFO] [stdout]    |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `callback` does not live long enough
[INFO] [stdout]    --> src/websub/subscriber/service.rs:76:29
[INFO] [stdout]     |
[INFO] [stdout]  67 |           let callback = self.callback.clone();
[INFO] [stdout]     |               -------- binding `callback` declared here
[INFO] [stdout] ...
[INFO] [stdout]  75 | /                         tokio::spawn(hub::subscribe(
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]     | |                             ^^^^^^^^^ borrowed value does not live long enough
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |__________________________- argument requires that `callback` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout]  85 |               })
[INFO] [stdout]     |               - `callback` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber/service.rs:75:38
[INFO] [stdout]     |
[INFO] [stdout]  75 |                           tokio::spawn(hub::subscribe(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/hub.rs:71:48
[INFO] [stdout]     |
[INFO] [stdout]  71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `conn` does not live long enough
[INFO] [stdout]    --> src/websub/subscriber/service.rs:80:31
[INFO] [stdout]     |
[INFO] [stdout]  73 |                       let conn = pool.get()?;
[INFO] [stdout]     |                           ---- binding `conn` declared here
[INFO] [stdout]  74 |                       for hub in hubs {
[INFO] [stdout]  75 | /                         tokio::spawn(hub::subscribe(
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]     | |                               ^^^^ borrowed value does not live long enough
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |__________________________- argument requires that `conn` is borrowed for `'static`
[INFO] [stdout]  82 |                       }
[INFO] [stdout]  83 |                   }
[INFO] [stdout]     |                   - `conn` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber/service.rs:75:38
[INFO] [stdout]     |
[INFO] [stdout]  75 |                           tokio::spawn(hub::subscribe(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/hub.rs:71:48
[INFO] [stdout]     |
[INFO] [stdout]  71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `callback` does not live long enough
[INFO] [stdout]    --> src/websub/subscriber/service.rs:76:29
[INFO] [stdout]     |
[INFO] [stdout]  67 |           let callback = self.callback.clone();
[INFO] [stdout]     |               -------- binding `callback` declared here
[INFO] [stdout] ...
[INFO] [stdout]  75 | /                         tokio::spawn(hub::subscribe(
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]     | |                             ^^^^^^^^^ borrowed value does not live long enough
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |__________________________- argument requires that `callback` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout]  85 |               })
[INFO] [stdout]     |               - `callback` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber/service.rs:75:38
[INFO] [stdout]     |
[INFO] [stdout]  75 |                           tokio::spawn(hub::subscribe(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/hub.rs:71:48
[INFO] [stdout]     |
[INFO] [stdout]  71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `conn` does not live long enough
[INFO] [stdout]    --> src/websub/subscriber/service.rs:80:31
[INFO] [stdout]     |
[INFO] [stdout]  73 |                       let conn = pool.get()?;
[INFO] [stdout]     |                           ---- binding `conn` declared here
[INFO] [stdout]  74 |                       for hub in hubs {
[INFO] [stdout]  75 | /                         tokio::spawn(hub::subscribe(
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]     | |                               ^^^^ borrowed value does not live long enough
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |__________________________- argument requires that `conn` is borrowed for `'static`
[INFO] [stdout]  82 |                       }
[INFO] [stdout]  83 |                   }
[INFO] [stdout]     |                   - `conn` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber/service.rs:75:38
[INFO] [stdout]     |
[INFO] [stdout]  75 |                           tokio::spawn(hub::subscribe(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout]  76 | |                             &callback,
[INFO] [stdout]  77 | |                             hub,
[INFO] [stdout]  78 | |                             topic.clone(),
[INFO] [stdout]  79 | |                             client.clone(),
[INFO] [stdout]  80 | |                             &*conn,
[INFO] [stdout]  81 | |                         ));
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/hub.rs:71:48
[INFO] [stdout]     |
[INFO] [stdout]  71 | ) -> impl Future<Output = Result<(), S::Error>> + use<S, B>
[INFO] [stdout]     |                                                 +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/util/concat_body.rs:51:34
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                                  ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/util/concat_body.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 51 -                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout] 51 +                 State::Streaming(buf) => buf.put(data),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/util/concat_body.rs:51:34
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                                  ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/util/concat_body.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 51 -                 State::Streaming(ref mut buf) => buf.put(data),
[INFO] [stdout] 51 +                 State::Streaming(buf) => buf.put(data),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `tweet` does not live long enough
[INFO] [stdout]    --> src/app/sender.rs:164:37
[INFO] [stdout]     |
[INFO] [stdout] 139 |         tweet: twitter::Tweet,
[INFO] [stdout]     |         ----- binding `tweet` declared here
[INFO] [stdout] ...
[INFO] [stdout] 164 |             let task = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                                     ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ------------------------------------------------------ argument requires that `tweet` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 197 |     }
[INFO] [stdout]     |      - `tweet` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/app/sender.rs:164:24
[INFO] [stdout]     |
[INFO] [stdout] 164 |             let task = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/app/sender.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         &self,
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `self` is a reference that is only valid in the method body
[INFO] [stdout]     |         let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `self` escapes the method body here
[INFO] [stdout]     |             argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/app/sender.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         core: &Core<S>,
[INFO] [stdout]     |         ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `core` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `core` escapes the method body here
[INFO] [stdout]     |             argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `tweet` does not live long enough
[INFO] [stdout]    --> src/app/sender.rs:178:36
[INFO] [stdout]     |
[INFO] [stdout] 139 |         tweet: twitter::Tweet,
[INFO] [stdout]     |         ----- binding `tweet` declared here
[INFO] [stdout] ...
[INFO] [stdout] 178 |         let retweet = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                                    ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] ...
[INFO] [stdout] 193 |             tokio::spawn(core.shutdown_handle().wrap_future(retweet));
[INFO] [stdout]     |             --------------------------------------------------------- argument requires that `tweet` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 197 |     }
[INFO] [stdout]     |     - `tweet` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/app/sender.rs:178:23
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let retweet = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn renew_subscriptions(&self, conn: &SqliteConnection)
[INFO] [stdout]     |                                -----
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                `self` is a reference that is only valid in the method body
[INFO] [stdout]     |                                let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 185 |             tokio::spawn(self.renew(id, hub, topic, conn).map(log_and_discard_error));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `self` escapes the method body here
[INFO] [stdout]     |             argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn renew_subscriptions(&self, conn: &SqliteConnection)
[INFO] [stdout]     |                                       ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       `conn` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 185 |             tokio::spawn(self.renew(id, hub, topic, conn).map(log_and_discard_error));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `conn` escapes the method body here
[INFO] [stdout]     |             argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 355 |     fn verify_intent(&self, id: i64, query: &str, conn: &SqliteConnection) -> Response<Full<Bytes>>
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `self` is a reference that is only valid in the method body
[INFO] [stdout]     |                      let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 404 |                     tokio::spawn(task);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `self` escapes the method body here
[INFO] [stdout]     |                     argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 355 |     fn verify_intent(&self, id: i64, query: &str, conn: &SqliteConnection) -> Response<Full<Bytes>>
[INFO] [stdout]     |                                                   ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   `conn` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 404 |                     tokio::spawn(task);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `conn` escapes the method body here
[INFO] [stdout]     |                     argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0521, E0597.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0521`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pipitor` (lib) due to 11 previous errors; 2 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0597]: `tweet` does not live long enough
[INFO] [stdout]    --> src/app/sender.rs:164:37
[INFO] [stdout]     |
[INFO] [stdout] 139 |         tweet: twitter::Tweet,
[INFO] [stdout]     |         ----- binding `tweet` declared here
[INFO] [stdout] ...
[INFO] [stdout] 164 |             let task = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                                     ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ------------------------------------------------------ argument requires that `tweet` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 197 |     }
[INFO] [stdout]     |      - `tweet` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/app/sender.rs:164:24
[INFO] [stdout]     |
[INFO] [stdout] 164 |             let task = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/app/sender.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         &self,
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `self` is a reference that is only valid in the method body
[INFO] [stdout]     |         let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `self` escapes the method body here
[INFO] [stdout]     |             argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/app/sender.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         core: &Core<S>,
[INFO] [stdout]     |         ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `core` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 165 |             tokio::spawn(core.shutdown_handle().wrap_future(task));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `core` escapes the method body here
[INFO] [stdout]     |             argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `tweet` does not live long enough
[INFO] [stdout]    --> src/app/sender.rs:178:36
[INFO] [stdout]     |
[INFO] [stdout] 139 |         tweet: twitter::Tweet,
[INFO] [stdout]     |         ----- binding `tweet` declared here
[INFO] [stdout] ...
[INFO] [stdout] 178 |         let retweet = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                                    ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] ...
[INFO] [stdout] 193 |             tokio::spawn(core.shutdown_handle().wrap_future(retweet));
[INFO] [stdout]     |             --------------------------------------------------------- argument requires that `tweet` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 197 |     }
[INFO] [stdout]     |     - `tweet` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/app/sender.rs:178:23
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let retweet = self.retweet(&tweet, core)?;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 203 |     ) -> anyhow::Result<impl Future<Output = ()> + use<S, B>> {
[INFO] [stdout]     |                                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn renew_subscriptions(&self, conn: &SqliteConnection)
[INFO] [stdout]     |                                -----
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                `self` is a reference that is only valid in the method body
[INFO] [stdout]     |                                let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 185 |             tokio::spawn(self.renew(id, hub, topic, conn).map(log_and_discard_error));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `self` escapes the method body here
[INFO] [stdout]     |             argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn renew_subscriptions(&self, conn: &SqliteConnection)
[INFO] [stdout]     |                                       ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       `conn` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 185 |             tokio::spawn(self.renew(id, hub, topic, conn).map(log_and_discard_error));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `conn` escapes the method body here
[INFO] [stdout]     |             argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 355 |     fn verify_intent(&self, id: i64, query: &str, conn: &SqliteConnection) -> Response<Full<Bytes>>
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `self` is a reference that is only valid in the method body
[INFO] [stdout]     |                      let's call the lifetime of this reference `'1`
[INFO] [stdout] ...
[INFO] [stdout] 404 |                     tokio::spawn(task);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `self` escapes the method body here
[INFO] [stdout]     |                     argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0521]: borrowed data escapes outside of method
[INFO] [stdout]    --> src/websub/subscriber/service.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 355 |     fn verify_intent(&self, id: i64, query: &str, conn: &SqliteConnection) -> Response<Full<Bytes>>
[INFO] [stdout]     |                                                   ----  - let's call the lifetime of this reference `'2`
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   `conn` is a reference that is only valid in the method body
[INFO] [stdout] ...
[INFO] [stdout] 404 |                     tokio::spawn(task);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `conn` escapes the method body here
[INFO] [stdout]     |                     argument requires that `'2` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `subscriber` does not live long enough
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 402 |         let mut subscriber = tokio_test::task::spawn(subscriber);
[INFO] [stdout]     |             -------------- binding `subscriber` declared here
[INFO] [stdout] ...
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------^^^^^^^^^^--------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            borrowed value does not live long enough
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 585 |     }
[INFO] [stdout]     |     - `subscriber` dropped here while still borrowed
[INFO] [stdout]     |
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:434:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 434 |             subscriber.next().await.unwrap().unwrap(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0716]: temporary value dropped while borrowed
[INFO] [stdout]    --> src/websub/subscriber.rs:451:14
[INFO] [stdout]     |
[INFO] [stdout] 451 |             &subscriber.service().pool.get().unwrap(),
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary value which is freed while still in use
[INFO] [stdout] 452 |         );
[INFO] [stdout]     |          - temporary value is freed at the end of this statement
[INFO] [stdout] ...
[INFO] [stdout] 585 |     }
[INFO] [stdout]     |     - borrow might be used here, when `req_task` is dropped and runs the destructor for type `impl futures::Future<Output = Result<(), <Client<Connector, http_body::Full<bytes::Bytes>> as twitter_client::traits::HttpService<http_body::Full<bytes::Bytes>>>::Error>>`
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:448:24
[INFO] [stdout]     |
[INFO] [stdout] 448 |           let req_task = subscriber.service().subscribe(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 449 | |             HUB.to_owned(),
[INFO] [stdout] 450 | |             topic,
[INFO] [stdout] 451 | |             &subscriber.service().pool.get().unwrap(),
[INFO] [stdout] 452 | |         );
[INFO] [stdout]     | |_________^
[INFO] [stdout] help: consider using a `let` binding to create a longer lived value
[INFO] [stdout]     |
[INFO] [stdout] 448 ~         let binding = subscriber.service().pool.get().unwrap();
[INFO] [stdout] 449 ~         let req_task = subscriber.service().subscribe(
[INFO] [stdout] 450 |             HUB.to_owned(),
[INFO] [stdout] 451 |             topic,
[INFO] [stdout] 452 ~             &binding,
[INFO] [stdout]     |
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:153:52
[INFO] [stdout]     |
[INFO] [stdout] 153 |     ) -> impl Future<Output = Result<(), S::Error>> + use<S, B> {
[INFO] [stdout]     |                                                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:479:37
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 479 |         util::first(task.timeout(), subscriber.next())
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:494:48
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 494 |         let (res, update) = future::join(task, subscriber.next()).timeout().await;
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:512:38
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 512 |         let form = util::first(task, subscriber.next()).await.unwrap_left();
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:536:37
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 536 |         util::first(task.timeout(), subscriber.next())
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:544:38
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 544 |         let form = util::first(task, subscriber.next()).await.unwrap_left();
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:564:37
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 564 |         util::first(task.timeout(), subscriber.next())
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `subscriber` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/websub/subscriber.rs:570:9
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                    -------------------------------------------------------------
[INFO] [stdout]     |                    |            |
[INFO] [stdout]     |                    |            immutable borrow occurs here
[INFO] [stdout]     |                    argument requires that `subscriber` is borrowed for `'static`
[INFO] [stdout] ...
[INFO] [stdout] 570 |         subscriber.enter(|cx, subscriber| assert!(subscriber.poll_next(cx).is_pending()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/websub/subscriber.rs:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let task = tokio::spawn(subscriber.service().discover(TOPIC.to_owned()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: requirement that the value outlives `'static` introduced here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.13.0/src/task/spawn.rs:127:28
[INFO] [stdout]     |
[INFO] [stdout] 127 |         T: Future + Send + 'static,
[INFO] [stdout]     |                            ^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> src/websub/subscriber/service.rs:93:90
[INFO] [stdout]     |
[INFO] [stdout]  93 |     ) -> impl Future<Output = anyhow::Result<(String, Option<impl Iterator<Item = String> + use<S, B>>)>>
[INFO] [stdout]     |                                                                                           +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0502, E0521, E0597, E0716.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pipitor` (lib test) due to 21 previous errors; 3 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091", kill_on_drop: false }`
[INFO] [stdout] 7a6efce942c9cbefe28c2a3e9a3b6cd134566056310adc9c566e53fa62a64091
